/**
 * Created by PanJiaChen on 16/11/18.
 */

/**
 * @param {string} path
 * @returns {Boolean}
 */
export function isExternal(path) {
  return /^(https?:|mailto:|tel:)/.test(path)
}

/**
 * @param {string} str
 * @returns {Boolean}
 */
export function validUsername(str) {
  const valid_map = ['admin', 'editor']
  return valid_map.indexOf(str.trim()) >= 0
}


export var checkSpecialCharacter = (rule,value,callback) => {
  const regEn = /[`~!@#$%^&*()_+<>?:"{},.\/;'[\]]/im,
  regCn = /[·！#￥（——）：；“”‘、|《》？、 【】[\]]/im;
  setTimeout(() => {
      if(regEn.test(value) || regCn.test(value)) {
          callback(new Error('不能包含特殊字符或者空字符串。'))
      }else{
          callback()
      }
  }, 100)
}
export var checkUrlCharacter = (rule,value,callback) => {
  const regEn = /[`~!@#%^*()_+<>"{},\;'[\]]/im,
  regCn = /[·！#￥（——）：；“”‘、，|《。》？、【】[\]]/im;
  setTimeout(() => {
      if(regEn.test(value) || regCn.test(value)) {
          callback(new Error('不能包含不符合菜单地址的特殊字符。'))
      }else{
          callback()
      }
  }, 100)
}

export function checkStrong(sValue) {
  var modes = 0;
  //正则表达式验证符合要求的
  if (sValue.length < 1) return modes;
  if (/\d/.test(sValue)) modes++; //数字
  if (/[a-z]/.test(sValue)) modes++; //小写
  if (/[A-Z]/.test(sValue)) modes++; //大写  
  if (/\W/.test(sValue)) modes++; //特殊字符
 
  //逻辑处理
  switch (modes) {
    case 1:
      return 1;
      break;
    case 2:
      return 2;
      break;
    case 3:
    case 4:
      return sValue.length < 12 ? 3 : 4
      break;
  }
  return modes;
}
